home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / var / arpwatch / arp2ethers next >
Text File  |  2006-06-30  |  2KB  |  86 lines

  1. #!/bin/sh
  2. # @(#) $Header$ (LBL)
  3. #
  4. # Convert arp.dat to ethers format
  5. #
  6. #    - sort on timestamp, newest first
  7. #    - discard entries without simple hostnames
  8. #    - discard all but first occurance of each ethernet address
  9. #    - discard entires with raw ip addresses for simple names
  10. #    - remove ip address and timestamp fields
  11. #    - append "-ip" to hosts with decnet address too
  12. #    - append "-old", "-old1", etc. as necessary
  13. #    - sort
  14. #
  15. # 1999-04-12    KELEMEN Peter <fuji@debian.org>
  16. #    Use sh(1) instead of csh(1).
  17. #
  18. # 2000-03-21    Erik Warmelink <erik@selwerd.nl>
  19. #    Use next instead of continue in included p.awk.
  20.  
  21. sort +2rn arp.dat | \
  22.     awk 'NF == 4 { print }' | \
  23. # 1999-04-12    KELEMEN Peter <fuji@debian.org>
  24. #    awk -f p.awk | \
  25.     awk '
  26. # Only print the first ethernet address seen
  27.  
  28. {
  29.     e = $1
  30.     if (seen[e])
  31.         next
  32.     seen[e] = 1
  33.     print $0
  34. }
  35.     ' | \
  36.     egrep -v '\.[0-9][0-9]*$' | \
  37.     sed -e 's/    .*    /    /' | \
  38. # 1999-04-12    KELEMEN Peter <fuji@debian.org>
  39. #    awk -f d.awk | \
  40.     awk '
  41. # DECnet hacking
  42.  
  43. BEGIN {
  44.     n = 0
  45.     sdecnet = "aa:0:4:"
  46.     ldecnet = length(sdecnet)
  47. }
  48.  
  49. {
  50.     ++n
  51.     e[n] = $1
  52.     h[n] = $2
  53.     if (sdecnet == substr($1, 1, ldecnet))
  54.         decnet[$2] = 1
  55. }
  56.  
  57. END {
  58.     for (i = 1; i <= n; ++i) {
  59.         if (decnet[h[i]] && sdecnet != substr(e[i], 1, ldecnet))
  60.             h[i] = h[i] "-ip"
  61.         print e[i] "\t" h[i]
  62.     }
  63. }
  64.     ' | \
  65. # 1999-04-12    KELEMEN Peter <fuji@debian.org>
  66. #    awk -f e.awk | \
  67.     awk '
  68. # Add -old suffix to ethers file, as required. Assumed sorted input
  69.  
  70. {
  71.     if (!seen[$2]) {
  72.         seen[$2] = 1
  73.         print
  74.         next
  75.     }
  76.     h = $2 "-old"
  77.     s = h
  78.     for (n = 1; seen[h]; ++n)
  79.         h = s n
  80.     seen[h] = 1
  81.     print $1 "\t" h
  82.     next
  83. }
  84.     ' | \
  85.     sort
  86.